package com.yuju.roomStatus.service;

import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Map;

import com.yuju.roomStatus.model.CheckinRoomModel;
import com.yuju.roomStatus.model.RoomStatusModel;
import com.yuju.roomStatus.model.RoomStatusPrintModel;
import com.yuju.roomStatus.model.RoomTypeStatusModel;

/**
 * 
 * 类名：IRoomStatusService  <br />
 *
 * 功能：房间状态
 *
 * @author : jiangp <br />
 * @Date : 2017年12月13日 下午6:14:00  <br />
 * @version : 1.1 <br />
 */
public interface IRoomStatusService {

	void getTest();
	/**
	 * 
	 * 功能：获取指定条件下的房态<br/>
	 *
	 * @author jiangp
	 * @Date 2017年12月6日 下午7:28:04 <br/>
	 */
	List<RoomStatusModel> getRoomStatus(RoomStatusModel roomStatusModel);


	List<RoomStatusModel> getRoomStatusCurrent(RoomStatusModel roomStatusModel);

	/**
	 * 
	 * 功能：获取酒店、房型或者指定房间的远期房态<br/>
	 *
	 * @author jiangp
	 * @Date 2017年12月6日 下午7:31:02 <br/>
	 */
	List<Map<String,Object>> getRoomStatusForward(String hotelId, String roomTypeId, 
			String roomId, Integer days);
	
	/**
	 * 
	 * 功能：获取可预订房间<br/>
	 *
	 * @author jiangp
	 * @Date 2017年12月11日 下午7:31:02 <br/>
	 */
	List<RoomStatusModel> getReserveEnableRoom(RoomStatusModel roomStatusModel);
	
	/**
	 * 
	 * 功能：获取可入住房间<br/>
	 *
	 * @author jiangp
	 * @Date 2017年12月11日 下午7:31:02 <br/>
	 */
	List<CheckinRoomModel> getCheckinEnableRoom(CheckinRoomModel checkinRoomModel);

	/**
	 *
	 * 功能：验证当前房间是否可入住。
	 * 输入参数：房间ID，房间预订单ID（如果有）<br/>
	 *
	 * @author jiangp
	 * @Date 2017年12月11日 下午7:31:02 <br/>
	 */
	List<RoomStatusModel> verifyCheckinRoom(List<RoomStatusModel> roomStatusModelList, Date beginDay, Date endDay);

	/**
	 *
	 * 功能：获取房态打印信息<br/>
	 *
	 * @author jiangp
	 * @Date 2018年2月5日 下午7:31:02 <br/>
	 */
	List<RoomStatusPrintModel> getRoomStatusPrint(RoomStatusModel roomStatusModel);

	/**
	 *
	 * 功能：导出房态打印信息<br/>
	 *
	 * @author jiangp
	 * @Date 2018年2月5日 下午7:31:02 <br/>
	 */
	byte[] expRoomStatusPrint(RoomStatusModel roomStatusModel) throws IOException;

	/**
	 *
	 * 功能：获取房间管理信息<br/>
	 *
	 * @author jiangp
	 * @Date 2018年2月5日 下午7:31:02 <br/>
	 */
	List<RoomStatusModel> getRoomStatusManage(RoomStatusModel roomStatusModel);
}
